// 参考文档
// https://www.cnblogs.com/hello-dummy/p/15559527.html

const fs    = require('fs');
const http  = require('http');
const url = require('url');
var cp  = require('child_process'); // 控制台
const port = 9527;

http.createServer(function(req, res) {
    //后端设置允许跨域
    res.setHeader("Access-Control-Allow-Origin","*");
    
    var parseUrl = url.parse(req.url);
    console.log(parseUrl);

    if(req.url === '/favicon.ico') {
        res.writeHead(200);
        res.end();
        return;
    }

    //解析请求，包括文件名
    var pathname= decodeURI(parseUrl.pathname);
    //获取后缀，判断是js还是css文件，如果目录结构不同，此处需要修改
    var firstDir = pathname && pathname.split('/')[1];
    var suffix = pathname && pathname.split('.').slice(-1).toString();

    const suffix2Mime = {
        'css': 'text/css;charset=utf-8',
        'js': 'application/x-javascript;charset=utf-8',
        'png': 'image/png',
        'jpg': 'image/jpeg',
        'jpeg': 'image/jpeg',
        'svg': 'image/svg+xml',
        'xml': 'text/xml',
        'xhtml': 'application/xhtml+xml',
        'txt': 'text/plain',
        'rtf': 'application/rtf',
        'pdf': 'application/pdf',
        'gif': 'image/gif',
        'au': 'audio/basic',
        'midi': 'audio/midi;audio/x-midi',
        'ra': 'audio/x-pn-realaudio',
        'ram': 'audio/x-pn-realaudio',
        'mpg': 'video/mpeg',
        'mpeg': 'video/mpeg',
        'avi': 'video/x-msvideo',
        'gz': 'application/x-gzip',
        'tar': 'application/x-tar',
        // 'tar': 'application/octet-stream',
    };
    // 获取请求文件的对应类型
    var ContentType = {'Content-Type': suffix2Mime[suffix] || 'text/html;charset=utf-8'};

    // 解决文件类型问题
    res.writeHead(200, ContentType);
    let filepath = __dirname;
    if(pathname == '/') { // 默认访问index.html文件
        filepath += '/index.html';
    } else { // 其它文件访问路径
        filepath += decodeURIComponent(pathname);
    }
    // 处理文件不存在情况
    if(fs.existsSync(filepath)) {
        fs.createReadStream(filepath).pipe(res);
    } else {
        res.end();
    }
}).listen(port, () => {
    var href =  `http://127.0.0.1:${port}/`
    console.log(`服务运行于 `+href);
    cp.exec(`start chrome ${href}`);
})

